package twelfth.字符编码;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class 使用指定编码格式编码 {
    public static void main(String[] args) throws IOException {
        String s1 = "welcome to java";
        String s = "加油少年";
        File file = new File("D:\\WorkSpaces\\JavaDevelopBase_start_329\\src\\twelfth\\encoding_Demo.txt");
        FileOutputStream fos = new FileOutputStream(file);
        byte[] b = s1.getBytes("ISO8859-1");
        fos.write(b);
        fos.close();
    }
}
/**
 * 转换s1的时候正常显示英文 毕竟这个格式就是为了英文服务的
 * 转换s的时候不能正常显示，输出的内容全是 ？？？？？？
 */
/***
 * 实际开发中使用什么编码?
 * 在所有项目开发中都要使用UTF-8编码，但是这样开发最好利用开发工具
 *  提示：对象序列化和对象反序列化操作的版本兼容性问题
 *  在对象序列化或者反序列化操作的时候，要考虑JDK版本的问题，
 *  如果序列化的JDK版本和反序列化的版本不一致 可能会造成异常。
 *  所以在序列化操作中引入了一个serialVersionUID的常量，
 *  可以通过此常量来验证版本的一致性。在进行反序列化时，JVM胡
 *  把传来的字节流中的serialVersionUID与本地相应实体（类）的serialVersionUID进行比较，
 *  如果相同就认为是一致的，可以反序列化，否则就会出现版本不一致的异常。
 *
 *  当实现java.ioSerializable接口的实体（类）没有显式的定义一个名为serialVersionUID,类型为long的变量时，
 *  Java序列化机制在编译时会自动生成一个此版本的serialVersionUID。
 *  当然，如果不希望通过编译来自动生成，也可以直接显示地定义一个名为serialVersionUID，类型为long的变量，
 *  只要不修改这个变量值的序列化实体都可以相互进行串行化和反串行化。
 *
 *  在本程序中，直接在Person类中加入以下的常量即可。
 *  private static final long serialVersionUID=1L;
 *  serialVersionUID的具体内容由用户指定就行。
 */